package com.uc3m.dsic.gestorZoo;

import java.sql.SQLException;

/**
 * Esta clase se caracteriza por los siguientes atributos:nombre, apellido1,
 * apellido2, telefono,identificador, edad, especialidad,estado
 * 
 * @author Noelia Garcia Toledo
 */
public class Cuidador {

    /**
     * Nombre del cuidador
     */
    String nombre;
    /**
     * Primer apellido del cuidador
     */
    String apellido1;
    /**
     * Segundo apellido del cuidador
     */
    String apellido2;
    /**
     * Identificador del cuidador
     */
    String identificador;
    /**
     * Telefono del cuidador
     */
    int telefono;
    /**
     * Edad del cuidador
     */
    int edad;
    /**
     * Especialidad del cuidador
     */
    String especialidad;
    /**
     * Especialidad del cuidador
     */
    String estado;

    /**
     * Crea un objeto de tipo Cuidador
     *
     * @param id
     *          identificador del empleado
     * @param nom
     *          nombre del empleado
     * @param ap1
     *          primer apellido del empleado
     * @param ap2
     *          segundo apellido del empleado
     * @param tlf
     *          telefono del empleado
     * @param edad
     *          edad del empleado
     * @param especialidad
     *          especialidad del empleado
     * @param estado	
     *          estado del empleado
     * @throws ZooException
     */
    public Cuidador(String id, String nom, String ap1, String ap2, int tlf,
            int edad, String especialidad, String estado) throws ZooException{
        if (!id.contains("'") && !nom.contains("'") && !ap1.contains("'")
                && !ap2.contains("'") && !especialidad.contains("'")
                && !estado.contains("'")) {
            if(edad > 0) {
                if((tlf > 0) && (toString(tlf).length() >= 9)){
                    identificador = id;
                    nombre = nom;
                    apellido1 = ap1;
                    apellido2 = ap2;
                    telefono = tlf;
                    this.edad = edad;
                    this.especialidad = especialidad;
                    this.estado = estado;
                }else{
                    throw new ZooException ("El telefono tiene que ser un número" 
                            + " positivo de nueve dígitos.");
                }
            }else {
                throw new ZooException ("La edad nunca puede ser negativa.");
            }
        } else {
            throw new ZooException ("No se admite el caracter '. "
                    + "Por favor, modifiquelo");
        }
    }

    /**
     * Devuelve el nombre del cuidador
     *
     * @return nombre del empleado
     */
    public String getNombre() {
        return nombre;
    }

    /**
     * Devuelve el primer apellido del cuidador
     *
     * @return apellido del cuiadador
     */
    public String getApellido1() {
        return apellido1;
    }

    /**
     * Devuelve el segundo apellido del cuidador
     *
     * @return apellido del cuiadador
     */
    public String getApellido2() {
        return apellido2;
    }

    /**
     * Devuelve el identificador del empleado
     *
     * @return identificador del cuidador
     */
    public String getId() {
        return identificador;
    }

    /**
     * Devuelve el numero de telefono que tiene el cuidador
     *
     * @return telefono del cuidador
     */
    public int getTelefono() {
        return telefono;
    }

    /**
     * Devuelve la edad del cuidador
     *
     * @return edad del cuidador
     */
    public int getEdad() {
        return edad;
    }

    /**
     * Devuelve la especialidad del empleado
     *
     * @return especialidad del cuidador
     */
    public String getEspecialidad() {
        return especialidad;
    }

    /**
     * Devuelve el estado del cuidador
     *
     * @return estado en el que esta el cuidador
     */
    public String getEstado() {
        return estado;
    }

    /**
     * Modifica el nombre del cuidador
     *
     * @param nom
     *          nombre del empleado
     */
    public void setNombre(String nom) {
        nombre = nom;
    }

    /**
     * Modifica el primer apellido del empleado
     *
     * @param ap1
     *          primer apellido del cuidador
     */
    public void setApellido1(String ap1) {
        apellido1 = ap1;
    }

    /**
     * Modifica el segundo apellido del cuidador
     *
     * @param ap2
     *          segundo apellido del empleado
     */
    public void setApellido2(String ap2) {
        apellido2 = ap2;
    }

    /**
     * Modifica el identificador del empleado
     *
     * @param id
     *          identificador del empleado
     */
    public void setId(String id) {
        identificador = id;
    }

    /**
     * Modifica el telefono del cuidador
     *
     * @param tlf
     *          telefono del empleado
     */
    public void setTelefono(int tlf) {
        telefono = tlf;
    }

    /**
     * Modifica la edad del cuidador
     *
     * @param edad
     *          edad del empleado
     */
    public void setEdad(int edad) {
        this.edad = edad;
    }

    /**
     * Modifica la especialidad del cuidador
     *
     * @param especialidad
     *          especialidad del cuidador
     */
    public void setEspecialidad(String especialidad) {
        this.especialidad = especialidad;
    }

    /**
     * Modifica el estado del cuidador
     *
     * @param estado
     *          estado el empleado
     */
    public void setEstado(String estado) {
        this.estado = estado;
    }

    /**
     * Conversor de integer a string.
     *
     * @param parametro
     *          Numero a convertir en cadena de caracteres
     * @return El numero convertido en cadena de caracteres
     */
    public String toString(int parametro){
         String conversion = Integer.toString(parametro);
         return conversion;
    }

    /**
     * Inserta un nuevo Cuidador en la base de datos
     *
     * @throws SQLException
     */
    public void insertarCuidador() throws SQLException {
        GestorZooInterface izoo = new GestorZooAplicacion();
        String inserta = "INSERT INTO CUIDADOR VALUES";
        String parametros[] = {identificador.trim().toUpperCase(),
                nombre.trim().toUpperCase(), apellido1.trim().toUpperCase(),
                apellido2.trim().toUpperCase(),
                toString(telefono).trim().toUpperCase(),
                toString(edad).trim().toUpperCase(),
                especialidad.trim().toUpperCase(), estado.trim().toUpperCase()};
        izoo.actualiza(inserta, parametros);
        izoo.cerrarBD();
    }

    /**
     * Borra un Cuidador de la tabla
     *
     * @throws SQLException
     */
    public void borrarCuidador() throws SQLException {
        GestorZooInterface izoo = new GestorZooAplicacion();
        izoo.actualiza("DELETE FROM CUIDADOR WHERE Id_empleado ='" 
                + identificador.trim().toUpperCase() + "'");
        izoo.cerrarBD();
    }
}
